]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
dash: Add minor optimization to _adjustIconSize()
authorFlorian Müllner <fmuellner@gnome.org>
Tue, 20 Sep 2011 16:35:48 +0000 (18:35 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Mon, 17 Oct 2011 14:07:52 +0000 (16:07 +0200)
In case _adjustIconSize() is called while the the dash icons are
animating, some extra work is required to yield the expected result.
Skip those extra steps when the icons are not actually animating.

https://bugzilla.gnome.org/show_bug.cgi?id=649248

js/ui/dash.js

index aa5f972703c40fc84512c9a0ead0d48d63786452..36588c0d99d84eae8ea99c3986ee466c2a198a1d 100644 (file)
@@ -427,14 +427,20 @@ Dash.prototype = {
 
         let firstIcon = iconChildren[0]._delegate.child._delegate.icon;
 
-        // Icons may be animating, so enforce the current icon size
-        // during the size request
-        let [currentWidth, currentHeight] = firstIcon.icon.get_size();
+        let minHeight, natHeight;
 
-        firstIcon.icon.set_size(this.iconSize, this.iconSize);
-        let [minHeight, natHeight] = iconChildren[0].get_preferred_height(-1);
+        // Enforce the current icon size during the size request if
+        // the icon is animating
+        if (firstIcon._animating) {
+            let [currentWidth, currentHeight] = firstIcon.icon.get_size();
 
-        firstIcon.icon.set_size(currentWidth, currentHeight);
+            firstIcon.icon.set_size(this.iconSize, this.iconSize);
+            [minHeight, natHeight] = iconChildren[0].get_preferred_height(-1);
+
+            firstIcon.icon.set_size(currentWidth, currentHeight);
+        } else {
+            [minHeight, natHeight] = iconChildren[0].get_preferred_height(-1);
+        }
 
 
         // Subtract icon padding and box spacing from the available height
@@ -478,11 +484,15 @@ Dash.prototype = {
             icon.icon.set_size(icon.icon.width * scale,
                                icon.icon.height * scale);
 
+            icon._animating = true;
             Tweener.addTween(icon.icon,
                              { width: targetWidth,
                                height: targetHeight,
                                time: DASH_ANIMATION_TIME,
-                               transition: 'easeOutQuad'
+                               transition: 'easeOutQuad',
+                               onComplete: function() {
+                                   icon._animating = false;
+                               }
                              });
         }
     },